cd C:\Users\alen_\Dropbox\burning_glass\data

import delimited "input_output_SUT2.csv", clear 
reshape long ind, i(code) j(industry, string)

ren code naics0 
ren industry naics1 

ren ind value 

g naics_3digit0=substr(naics0,1,3)
g naics_3digit1=substr(naics1,1,3)

destring naics_3digit0, g(naics_3digit0_num) force
destring naics_3digit1, g(naics_3digit1_num) force

drop naics_3digit0 naics_3digit1 

ren naics_3digit0_num naics_3digit0 
ren naics_3digit1_num naics_3digit1 

collapse (sum) value, by(naics_3digit0 naics_3digit1)

drop if naics_3digit0==. 
drop if naics_3digit1==.

save input_output_naics_3digit, replace



*** Create input value as a fraction of output (either upstream or downstream) They do not add up to one, because some industries do not need very much input anyway (they have high value added)
*** This measures the usage intensity of specific input from certain industries and the intensity of their own output being used as inputs. Not all output will be used as inputs. The usage intensity of their input tells us about the linkage between industries as well. 


*** Gross output 
import excel "gross_output_bea_table.xlsx", sheet("Table") cellrange(A6:J205) firstrow clear
ren D output2017 

ren NAICS naics_3digit_match 

drop if naics_3digit_match==""

keep naics_3digit_match output2017 

collapse (sum) output2017, by(naics_3digit)

save naics_output2017, replace


*** Share of gross output that goes into another industry's input
u input_output_naics_3digit, clear

tostring naics_3digit0, g(naics_3digit0_st)
tostring naics_3digit1, g(naics_3digit1_st)

g naics_3digit0_match=naics_3digit0_st 
g naics_3digit1_match=naics_3digit1_st 

replace naics_3digit0_match="313, 314" if naics_3digit0_match=="313" | naics_3digit0_match=="314"
replace naics_3digit0_match="315, 316" if naics_3digit0_match=="315" | naics_3digit0_match=="316"
replace naics_3digit0_match="515, 517" if naics_3digit0_match=="515" | naics_3digit0_match=="517"
replace naics_3digit0_match="521, 522" if naics_3digit0_match=="521" | naics_3digit0_match=="522"
replace naics_3digit0_match="532, 533" if naics_3digit0_match=="532" | naics_3digit0_match=="533"
replace naics_3digit0_match="711, 712" if naics_3digit0_match=="711" | naics_3digit0_match=="712"


replace naics_3digit1_match="313, 314" if naics_3digit1_match=="313" | naics_3digit1_match=="314"
replace naics_3digit1_match="315, 316" if naics_3digit1_match=="315" | naics_3digit1_match=="316"
replace naics_3digit1_match="515, 517" if naics_3digit1_match=="515" | naics_3digit1_match=="517"
replace naics_3digit1_match="521, 522" if naics_3digit1_match=="521" | naics_3digit1_match=="522"
replace naics_3digit1_match="532, 533" if naics_3digit1_match=="532" | naics_3digit1_match=="533"
replace naics_3digit1_match="711, 712" if naics_3digit1_match=="711" | naics_3digit1_match=="712"

bysort naics_3digit0_match naics_3digit1_match: egen matched_value=total(value)

ren naics_3digit0_match naics_3digit_match 

merge m:1 naics_3digit_match using naics_output2017
keep if _merge==3
drop _merge 

ren naics_3digit_match naics_3digit0_match

g share0=matched_value/(output2017*1000)

keep naics_3digit0 naics_3digit1 share0

*collapse (sum) share0, by(naics_3digit0_match) 

save output_share, replace


*** Share of the total output that is the value of input 

u input_output_naics_3digit, clear

tostring naics_3digit0, g(naics_3digit0_st)
tostring naics_3digit1, g(naics_3digit1_st)

g naics_3digit0_match=naics_3digit0_st 
g naics_3digit1_match=naics_3digit1_st 

replace naics_3digit0_match="313, 314" if naics_3digit0_match=="313" | naics_3digit0_match=="314"
replace naics_3digit0_match="315, 316" if naics_3digit0_match=="315" | naics_3digit0_match=="316"
replace naics_3digit0_match="515, 517" if naics_3digit0_match=="515" | naics_3digit0_match=="517"
replace naics_3digit0_match="521, 522" if naics_3digit0_match=="521" | naics_3digit0_match=="522"
replace naics_3digit0_match="532, 533" if naics_3digit0_match=="532" | naics_3digit0_match=="533"
replace naics_3digit0_match="711, 712" if naics_3digit0_match=="711" | naics_3digit0_match=="712"


replace naics_3digit1_match="313, 314" if naics_3digit1_match=="313" | naics_3digit1_match=="314"
replace naics_3digit1_match="315, 316" if naics_3digit1_match=="315" | naics_3digit1_match=="316"
replace naics_3digit1_match="515, 517" if naics_3digit1_match=="515" | naics_3digit1_match=="517"
replace naics_3digit1_match="521, 522" if naics_3digit1_match=="521" | naics_3digit1_match=="522"
replace naics_3digit1_match="532, 533" if naics_3digit1_match=="532" | naics_3digit1_match=="533"
replace naics_3digit1_match="711, 712" if naics_3digit1_match=="711" | naics_3digit1_match=="712"

bysort naics_3digit0_match naics_3digit1_match: egen matched_value=total(value)

ren naics_3digit1_match naics_3digit_match 

merge m:1 naics_3digit_match using naics_output2017
keep if _merge==3
drop _merge 

ren naics_3digit_match naics_3digit1_match

g share1=matched_value/(output2017*1000)

keep naics_3digit0 naics_3digit1 share1

*collapse (sum) share0, by(naics_3digit0_match) 

save input_share, replace


*** Calculate the size of the up and downstream industries (top 5 industries each)

u input_share, clear

gsort naics_3digit1 -share1

by naics_3digit1: keep if _n<=5

drop if share1==0 | share1==.

ren naics_3digit0 naics3 

joinby naics3 using metrofips_naics3_emp_2018_q1

collapse (sum) emp_input=emp_msa, by(naics_3digit1 metrofips)

ren naics_3digit1 naics3 

save input_employment_metrofips, replace



u output_share, clear

gsort naics_3digit0 -share0

by naics_3digit0: keep if _n<=5

drop if share0==0 | share0==.

ren naics_3digit1 naics3 

joinby naics3 using metrofips_naics3_emp_2018_q1

collapse (sum) emp_output=emp_msa, by(naics_3digit0 metrofips)

ren naics_3digit0 naics3 

save output_employment_metrofips, replace



**** Secondary WFH exposure 
u remote_fraction_based_on_bg_naics, clear
ren naics3 naics_3digit1
merge 1:m naics_3digit1  using output_share
keep if _merge==3
drop _merge

g remote=0
replace remote=1 if dremote>0.15 & dremote<.

collapse dremote_secondary=remote [w=share], by(naics_3digit0)
sort dremote_secondary
edit

ren naics_3digit0 naics3 

save remote_adoption_output_share, replace

merge 1:1 naics3 using remote_fraction_based_on_bg_naics
keep if _merge==3
drop _merge



u remote_fraction_based_on_bg_naics, clear
ren naics3 naics_3digit0
merge 1:m naics_3digit0  using input_share
keep if _merge==3
drop _merge

g remote=0
replace remote=1 if dremote>0.15 & dremote<.

collapse dremote_secondary=remote [w=share], by(naics_3digit1)
sort dremote_secondary
edit

ren naics_3digit1 naics3 

save remote_adoption_input_share, replace


*** Adjacent remote work shock

***
u remote_dummy_based_on_bg, clear

g remote=0
replace remote=1 if dremote>0.15 & dremote<.

joinby onet using career_change

collapse remote, by(onet_related)

ren onet_related onet 
ren remote remote_adj

save remote_adoption_career_shock1, replace


u remote_dummy_based_on_bg, clear

g remote=0
replace remote=1 if dremote>0.15 & dremote<.

ren onet onet_related

joinby onet_related using career_change

collapse remote, by(onet)
ren remote remote_adj

save remote_adoption_career_shock2, replace
